/*
 * ......................................&&.........................
 * ....................................&&&..........................
 * .................................&&&&............................
 * ...............................&&&&..............................
 * .............................&&&&&&..............................
 * ...........................&&&&&&....&&&..&&&&&&&&&&&&&&&........
 * ..................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&..............
 * ................&...&&&&&&&&&&&&&&&&&&&&&&&&&&&&.................
 * .......................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.........
 * ...................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...............
 * ..................&&&   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&............
 * ...............&&&&&@  &&&&&&&&&&..&&&&&&&&&&&&&&&&&&&...........
 * ..............&&&&&&&&&&&&&&&.&&....&&&&&&&&&&&&&..&&&&&.........
 * ..........&&&&&&&&&&&&&&&&&&...&.....&&&&&&&&&&&&&...&&&&........
 * ........&&&&&&&&&&&&&&&&&&&.........&&&&&&&&&&&&&&&....&&&.......
 * .......&&&&&&&&.....................&&&&&&&&&&&&&&&&.....&&......
 * ........&&&&&.....................&&&&&&&&&&&&&&&&&&.............
 * ..........&...................&&&&&&&&&&&&&&&&&&&&&&&............
 * ................&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&............
 * ..................&&&&&&&&&&&&&&&&&&&&&&&&&&&&..&&&&&............
 * ..............&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&....&&&&&............
 * ...........&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&......&&&&............
 * .........&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.........&&&&............
 * .......&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...........&&&&............
 * ......&&&&&&&&&&&&&&&&&&&...&&&&&&...............&&&.............
 * .....&&&&&&&&&&&&&&&&............................&&..............
 * ....&&&&&&&&&&&&&&&.................&&...........................
 * ...&&&&&&&&&&&&&&&.....................&&&&......................
 * ...&&&&&&&&&&.&&&........................&&&&&...................
 * ..&&&&&&&&&&&..&&..........................&&&&&&&...............
 * ..&&&&&&&&&&&&...&............&&&.....&&&&...&&&&&&&.............
 * ..&&&&&&&&&&&&&.................&&&.....&&&&&&&&&&&&&&...........
 * ..&&&&&&&&&&&&&&&&..............&&&&&&&&&&&&&&&&&&&&&&&&.........
 * ..&&.&&&&&&&&&&&&&&&&&.........&&&&&&&&&&&&&&&&&&&&&&&&&&&.......
 * ...&&..&&&&&&&&&&&&.........&&&&&&&&&&&&&&&&...&&&&&&&&&&&&......
 * ....&..&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&...........&&&&&&&&.....
 * .......&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&..............&&&&&&&....
 * .......&&&&&.&&&&&&&&&&&&&&&&&&..&&&&&&&&...&..........&&&&&&....
 * ........&&&.....&&&&&&&&&&&&&.....&&&&&&&&&&...........&..&&&&...
 * .......&&&........&&&.&&&&&&&&&.....&&&&&.................&&&&...
 * .......&&&...............&&&&&&&.......&&&&&&&&............&&&...
 * ........&&...................&&&&&&.........................&&&..
 * .........&.....................&&&&........................&&....
 * ...............................&&&.......................&&......
 * ................................&&......................&&.......
 * .................................&&..............................
 * ..................................&..............................
 */

/*
 * @Author: silence
 * @Date: 2022-04-27 16:10:09
 * @LastEditors: silence
 * @LastEditTime: 2022-04-27 16:10:24
 * @Description: 自定义Tabbar页面
 */
import 'package:flutter/material.dart';
import 'package:sil_base_widget_package/sil_base_widget_package.dart';
import '../../../base/SilScaffold.dart';
import '../pages/PowerStation/Set/PowerStationSetPage.dart';
import '../pages/Home/HomePage.dart';
import '../../../utils/color/ColorUtils.dart';

import '../pages/Mine/Language/SilLocalizations/SilLocalizations.dart';
import '../pages/Mine/MinePage/MinePage.dart';
import '../utils/eventBus/eventBus.dart';
import '../utils/string/StringConstant.dart';

class SilTabbar extends StatefulWidget {
  const SilTabbar({Key? key}) : super(key: key);

  @override
  State<SilTabbar> createState() => _SilTabbarState();
}

class _SilTabbarState extends State<SilTabbar> {
  List<Map> _tabbars = [];

  int _curIndex = 0;
  List<BottomNavigationBarItem> _tabbarItems = [];
  bool stateBarHide = true; // 是否需要隐藏状态条，全屏显示的时候需要

  /**
   * @description: 返回底部tabbarItem
   * @param {*}
   * @return {*}
   */
  BottomNavigationBarItem tabbarItem(
      {required String label,
      required String imgPath,
      required String selectedImgPath,
      required Size size}) {
    return BottomNavigationBarItem(
        label: label,
        icon: SilImage(imgPath, width: size.width, height: size.height),
        activeIcon:
            SilImage(selectedImgPath, width: size.width, height: size.height));
  }

  @override
  void initState() {
    super.initState();

    // 跳转到哪个tabbar
    bus.on(StringConstant.APPGotoTabbar, (index) {
      if (mounted) {
        setState(() {
          _curIndex = index;
        });
      }
    });
  }

  Widget build(BuildContext context) {
    _tabbars = [
      {
        'title': LangOf(context)?.bottom?.station,
        'imgPath': 'imgs/tabbar/tab_home_nor.png',
        'selectedImgPath': 'imgs/tabbar/tab_home_sel.png'
      },
      {
        'title': LangOf(context)?.bottom?.setting,
        'imgPath': 'imgs/tabbar/tab_set_nor.png',
        'selectedImgPath': 'imgs/tabbar/tab_set_sel.png'
      },
      {
        'title': LangOf(context)?.bottom?.me,
        'imgPath': 'imgs/tabbar/tab_mine_nor.png',
        'selectedImgPath': 'imgs/tabbar/tab_mine_sel.png'
      }
    ];
    _tabbarItems = [];
    _tabbars.forEach((map) {
      _tabbarItems.add(tabbarItem(
          label: map['title'],
          imgPath: map['imgPath'],
          selectedImgPath: map['selectedImgPath'],
          size: Size(28.w, 28.w)));
    });

    return SilScaffold(
      stateBarHide: stateBarHide,
      navBarHide: true,
      leftBackButtonHide: true,
      sideMargin: 0,
      body: IndexedStack(
        index: _curIndex,
        children: [
          HomePage(),
          PowerStationSetPage(),
          MinePage(),
        ],
      ),
      bottomNavigationBar: BottomNavigationBar(
          selectedItemColor: ColorUtils.color_theme,
          unselectedItemColor: Color.fromRGBO(150, 151, 153, 1),
          unselectedLabelStyle: TextStyle(
            fontWeight: FontWeight.normal,
            fontSize: 12.sp,
          ),
          selectedLabelStyle: TextStyle(
            fontWeight: FontWeight.bold,
            fontSize: 12.sp,
          ),
          elevation: 1,
          backgroundColor: ColorUtils.color_tabbar_bg,
          type: BottomNavigationBarType.fixed,
          onTap: (index) {
            setState(() {
              //点击tabbar发送通知
              bus.emit(StringConstant.APPGotoTabbar, (index));
              _curIndex = index;
            });
          },
          currentIndex: _curIndex,
          items: _tabbarItems),
    );
  }
}
